package com.it.entity.dispatch;

import cn.afterturn.easypoi.excel.annotation.Excel;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

/**
 * <p>
 * 查勘调度表（报案受理后生成的查勘任务调度信息）
 * </p>
 *
 * @author lutao
 * @since 2025年09月19日
 */
@Getter
@Setter
@Accessors(chain = true)
@TableName("ai_claim_dispatch")
public class AiClaimDispatch implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 调度主键ID
     */
    @TableId(value = "dispatch_id", type = IdType.AUTO)
    private Integer dispatchId;

    /**
     * 关联报案ID（关联报案表）
     */
    @TableField("report_id")
    @Excel(name = "报案编号" , width = 25)
    private String reportId;

    /**
     * 关联保单编号（冗余字段，便于快速查询）
     */
    @TableField("policy_id")
    @Excel(name = "保单编号" , width = 25)
    private String policyId;

    /**
     * 调度员工号（保险公司内部员工，关联系统用户表）
     */
    @TableField("dispatcher_work_no")
    @Excel(name = "调度员工号" , width = 15)
    private String dispatcherWorkNo;

    /**
     * 查勘员工号（负责现场查勘的工作人员，关联系统用户表）
     */
    @TableField("surveyor_work_no")
    private String surveyorWorkNo;
    /**
     * 查勘员姓名（冗余字段，便于快速查询）
     */
    @TableField(exist = false)
    @Excel(name = "查勘员" , width = 15)
    private String surveyorName;

    /**
     * 查勘地点（默认与灾祸发生地点一致，可调整）
     */
    @TableField("survey_address")
    @Excel(name = "查勘地点" , width = 50)
    private String surveyAddress;

    /**
     * 计划查勘开始时间
     */
    @TableField("scheduled_start_time")
    @Excel(name = "计划查勘时间" , width = 25)
    private LocalDateTime scheduledStartTime;

    /**
     * 调度创建时间
     */
    @TableField("dispatch_time")
    @Excel(name = "调度创建时间" , width = 25,format = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime dispatchTime;

    /**
     * 调度状态（1-待确认，2-已确认，3-查勘中，4-查勘完成，5-已取消）
     */
    @TableField("dispatch_status")
    @Excel(name = "调度状态" , width = 15,replace = {"待确认_1","已确认_2","查勘中_3","查勘完成_4","已取消_5"})
    private Integer dispatchStatus;

    /**
     * 调度备注（如特殊查勘要求、标的特征说明等）
     */
    @TableField("dispatch_remark")
    @Excel(name = "调度备注" , width = 50)
    private String dispatchRemark;

    /**
     * 查勘员确认时间
     */
    @TableField("surveyor_confirm_time")
    private LocalDateTime surveyorConfirmTime;

    /**
     * 取消原因（仅当dispatch_status=5时填写）
     */
    @TableField("cancel_reason")
    @Excel(name = "调度取消原因" , width = 25)
    private String cancelReason;

    // 报案状态
    @TableField(exist = false)
    private  Integer reportStatus;

    // 外包状态
    @TableField(exist = false)
    private  Integer workOutStatus;

}
